{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 全面 —— 自学的境界"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "之前提到过那些 “貌似一出手就已然是高手” 的人，也为此做过一番解释：\n",
    "\n",
    "> 他们的特点就是善于**刻意练习**……\n",
    "\n",
    "为了真正做到刻意练习，更重要的是需要不断地进行**刻意思考** —— 刻意思考自己究竟应该在哪些地方必须刻意练习？\n",
    "\n",
    "之前也说过，人和人非常不同，于是，需要刻意练习的地方也各不相同。\n",
    "\n",
    "不过，倒是有一个方面，所有的自学者都必须刻意练习 —— 这是谁都逃不过的地方：\n",
    "\n",
    "> **全面**\n",
    "\n",
    "那些 “貌似一出手就已然是高手” 的人就是在这一方面超越了绝大多数人 —— 在每个层面上，他们都学习得更全面，练习得更全面，使用得更全面，在使用此技能去创造的时候，思考得也就自然更为全面。于是，就产生了 “全面碾压” 的效果。\n",
    "\n",
    "然而，这是很难被人发现的 “秘密”，因为 “全面” 这个事实，只存在于这些高人的大脑之中，很难被展示出来…… 而他们不会想到这是个什么 “秘密” —— 因为他们一直就是这么做的，他们会误以为所有人都是这么做的。\n",
    "\n",
    "小时候，我经常看到父亲备课到深夜。他手中的教科书，每一页的页边都密密麻麻地写着各种注释，实在没地方写了，就在那个地方插上一张纸，于是能写得更多…… 到最后，他的那本书，要比别人同样的书看起来厚很多。\n",
    "\n",
    "许多年后，我竟然成了老师，于是，我就备课。我备课的方法自然是 “拷贝” 过来的，我父亲怎么做的，我见过，于是我也那么做。到最后，都到了这个地步：只有那书已经成了别人的两倍厚度心里才踏实。\n",
    "\n",
    "又过了一段时间，在一个内部分享会中，我听到一位老师的说法，他问我：\n",
    "\n",
    "> …… 李老师啊，您已经讲了这么久了，都熟到干脆不用备课的地步了吧？\n",
    "\n",
    "我愣了一下，讲课前不用备课这事根本就不在我的想象范围之内啊！我父亲讲了那么多年的课，不还是经常备课到深夜嘛？我也一样做了，总是觉得 “还是有很多可以补充的地方” 啊！\n",
    "\n",
    "然而，这个小插曲提醒了我一个现象：\n",
    "\n",
    "> 我会那么做，我就会误以为所有人都会那么做……\n",
    "\n",
    "我猜，那些 “貌似一出手就已然是高手” 的人，也一样，他们从未觉得这是什么 “秘密”，他就是那么做的，他们很久以来就是那么做的，他们误以为所有人都是那么做的。\n",
    "\n",
    "从另外一方面，外人更希望他们拥有的是个 “秘密”。于是，因为自己并不知道那个 “秘密”，所以，自己做不到他们那样 —— 这样看起来就合理了，自己的心里也够舒服了，毕竟看起来理所应当了么。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把自学当作一门手艺，把所有的技能也都当作一门手艺，那就相对容易理解了：\n",
    "\n",
    "> **全面**，是掌握一门手艺的基本。\n",
    "\n",
    "为了全面，当然要靠时间。所以，关于 “混与不混”，我们有了更深刻却又更朴素的认识：\n",
    "\n",
    "> 所谓的不混时间，无非就是**刻意练习**、**追求全面**。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "也正是这个原因，几乎所有自学高手都懂这个道理：\n",
    "\n",
    "> **绝对不能只靠一本书**\n",
    "\n",
    "有个特别有趣的现象，我觉得绝大多数人平日里都挺大手大脚的，都挺舍不得对自己过分苛刻的，但一到买书这件事上，绝大多数人真的很节俭，真的很苛刻 —— 对待越严肃的知识越是如此。倒是在买本小说啊或者买张电影票的时候，基本不用过脑子。\n",
    "\n",
    "他们好像完全不知道自己正在疯狂地虐待自己…… 的大脑。\n",
    "\n",
    "对自己的胃好一点，我绝对认同 —— 因为我自己就是个吃货。\n",
    "\n",
    "可是，在很长一段时间里，我完全不能理解人们为什么不由自主地对自己的大脑不好，不仅是不好，还是格外地不好，甚至干脆是虐待。\n",
    "\n",
    "观察学生多了，也就慢慢理解了。\n",
    "\n",
    "绝大多数人事实上从来没有习得过自学能力，他们终生都在被指导、被引领。而在校教育少则九年，多则十几年二十年，他们体验过太多 “不过尔尔” 的学习过程。他们肯定不是没花过钱，九年义务教育的过程中，就花了父母很多钱，后面若是上了大学，花钱更多…… 花过那么多钱，却总是没什么收获，在他们的经验中，“这次我应该小心点” 是再自然不过的事。\n",
    "\n",
    "“第一次突破” 很重要。\n",
    "\n",
    "如果一个人有过一次只通过阅读书籍即获得一项新技能的体验，那么，他们内心深处（更准的说法是大脑的底层操作系统）的那个成本计算方法就会发生改变，心里想的更可能是：\n",
    "\n",
    "> * 这肯定是有用的，一旦学会，收益可不是几十块钱的书价或几百块课价那么一点点……\n",
    "> * 至于是否能学会，主要看我投入的时间精力预算有多少……\n",
    "\n",
    "我身边有很多自学能力非常强的人。\n",
    "\n",
    "这些人买书的方式都是一样的，一旦他们决定学习什么技能的时候，第一个想到的是去买书，而不是去找人。他们之前体验过，他们就是很清楚：\n",
    "\n",
    "> * 首先，书里什么都有；\n",
    "> * 其次，仅靠阅读在大多数情况下绝对够了……\n",
    "\n",
    "更为不一样的是，他们一定会买回来一大堆书 —— 而不是四处去问，“关于 xx 的哪一本书最好啊？”\n",
    "\n",
    "在他们眼里，书是成本最低的东西，比起最终的收益来讲更是不值一提。\n",
    "\n",
    "更为重要的是，**一本书绝对不够** —— 无论是谁写的，无论那个作者多么著名，影响力有多大…… 因为，书也好、教程也罢，这种东西就是有 “篇幅限制” 的。更为关键的是，每个作者都有不一样的视角、不一样的出发点和不一样的讲解方式、组织方法。\n",
    "\n",
    "比如，我这本就跟别人写的很不一样。我的出发点是把编程当作一个自学的例子，重点在于学会如何自学，并且通过实践真的习得一个起初你觉得不是刚需，学会之后发现干脆离不开的、不可或缺的技能。这本书的内容组织方式也不一样 —— 反正你现在已经知道了。\n",
    "\n",
    "另外，这本书的目标里有更重要的另外一个：“让你有能力靠自己能够理解所有的官方文档” —— 书里不用讲官方标准库里的每个模块、每个函数究竟如何使用，因为那些在官方文档里定义得非常清楚……\n",
    "\n",
    "而其他人写的呢？比如 [Think Python](http://greenteapress.com/wp/think-python-2e/)，比如 [A Bite of Python](https://python.swaroopch.com/)，再比如 [Dive into Python](https://linux.die.net/diveintopython/html/)<a href='#fn1' name='fn1b'><sup>[1]</sup></a>，以及网上很多很多免费的 Python 教程都写得很好呢！\n",
    "\n",
    "没有经验的人不懂而已。当你搞明白了一本书，后面再多读哪怕很多本的时间精力成本都是很低的，但每多读一本，都能让你在这个话题中变得**更为完整**。\n",
    "\n",
    "针对同一个话题读很多本书的最常见体验就是：\n",
    "\n",
    "> - 嗯？这个点很好玩！这个角度有意思！\n",
    "> - 看看比比前面几个作者怎么论述的呢？\n",
    "> - 嗯？！怎么我看过却竟然没注意到呢！\n",
    "\n",
    "这最后一条真的是很令人恼火却又享受的体验。它令你恼火，是因为你竟然错过；它令你享受，是因为虽然错过却竟然还有弥补的机会！\n",
    "\n",
    "总有一天你会明白的，一切的 “学会” 和 “学好” 之间的差异，无非是**全面程度**的差异。\n",
    "\n",
    "于是，翻译过来，“学好” 竟然如此简单：\n",
    "\n",
    "> **多读几本书。狠一点，就是多读很多本书。**\n",
    "\n",
    "到最后，这种习惯会慢慢延伸到生活中。比如，我在遇到好歌的时候，总是想尽一切办法找到那首歌的很多版本，首唱者可能有很多版本，录音版、现场版，不同年份的版本等等；还有很多翻唱…… 看电影也一样，若是有翻拍版本，一定会找过来看 —— 不同国家的翻拍版本对比起来特别好玩。\n",
    "\n",
    "甚至，到最后，你做东西的时候都会想着顺手多做几个版本。我这本 “书”，就肯定会有印刷版、电子版…… 到最后还会有个产品版 —— 这基本上是目前尚无其它作者做到的事情。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "提高对所学知识技能的 “全面程度”，有个最狠的方法 —— 再次说出来不惊人，但实际效果惊到爆：\n",
    "\n",
    "> **教是最好的学习方法。**\n",
    "\n",
    "这真的不是我的总结，人类很早就意识到这个现象了罢？\n",
    "\n",
    "孔老夫子在《礼记・学记》里就 “曰” 过：\n",
    "\n",
    "> “学然后知不足，教然后知困。知不足，然后能自反也；知困，然后能自强也。故曰：教学相长也。”\n",
    "\n",
    "到了孔子三十二代孙，孔颖达，解读《兑命》中所提 “学学半” 时，说到：\n",
    "\n",
    "> “学学半者，上学为教，下学者谓习也……”\n",
    "\n",
    "许嘉璐先生<a href='#fn2' name='fn2b'><sup>[2]</sup></a>有一本书，《未央续集》，提到这段解读的时候讲了个自己的例子：\n",
    "\n",
    "> “我当了五十年的教师，经常遇到这种情况：\n",
    ">\n",
    "> > 备好课了，上讲台了，讲着讲着，突然发现有的地方疏漏了，某个字的读音没有查，文章前后的逻辑没有理清楚，下完课回去补救，下次就不会出现同样的情况了，这就是教学相长。”\n",
    "\n",
    "所以，别说老师了，学生更是如此。\n",
    "\n",
    "我经常讲我所观察到的班里的第一和第二的区别 —— 因为这是很好的例子。\n",
    "\n",
    "第一总是很开放，乐于分享，别人问他问题，他会花时间耐心解答；第二总是很保守，不愿分享，不愿把时间 “浪费” 在帮助他人身上…… 注意，在 “浪费” 这个词上我加了引号 —— 这是有原因的。\n",
    "\n",
    "我的观察是，这不是现象，这是原因：\n",
    "\n",
    "> 第一之所以比第二强，更可能是因为他开放、乐于分享，才成了第一。\n",
    "\n",
    "而不是因为他是第一，所以才开放，所以才乐于分享。\n",
    "\n",
    "因为到最后，你会发现，第一并没有因为时间被占用而成绩退步，反而成绩更好。这是因为他总是在帮助其他同学的过程里，看到了自己也要避免的错误、发现了其它的解题思路、巩固了自己的知识点，所以他在社交的过程中学到了更多，同时还收获了同学们的友谊 —— 换言之，通过分享，通过反复讲解，他自己的 “全面程度” 得到了最快的提高。\n",
    "\n",
    "而第二呢？第二其实有可能比第一更聪明呢 —— 他可是全靠自己走到那个地步的！可是，他没有用最狠的方式提高自己的全面程度，虽然排名第二，可他其实只不过是一个 “下学” 者，于是，他很吃力的 —— 虽然他实际上很聪明…… 于是，在这种感受下，他怎么肯愿意把那么吃力才获得的东西分享出去呢？\n",
    "\n",
    "这真是个有趣且意味深长的现象。\n",
    "\n",
    "另外一个有趣的现象是，“下学” 者永远等待 “上学” 者整理好的东西。之前在《[如何从容应对含有过多 “前置引用” 的知识？](Part.1.F.deal-with-forward-references.ipynb)》提到过一个对应策略：\n",
    "\n",
    "> 尽快开始整理归纳总结\n",
    "\n",
    "同时给出了建议：\n",
    "\n",
    "> 一定要自己动手去做……\n",
    "\n",
    "不仅如此，还描述了个我自己的例子，通过 “自己动手整理” 才发现自己之前竟然完全理解错了。\n",
    "\n",
    "我这方面运气非常好，因为父母全都是大学教师，从小父母就鼓励我帮同学解答问题，这让我不知不觉在很早很早就开始了 “上学” 的阶段。\n",
    "\n",
    "这一次写这本 “书” 的过程中，同样的 “奇迹” 再次发生在我身上。\n",
    "\n",
    "说实话，正则表达式我一直没有完全掌握 —— 虽然偶尔用用，也都是边查边用。实在解决不了，就算了…… 现在回头想想，多少就是因为 “[仅凭感觉，并没觉得那绝对是刚需](Part.3.D.indispensable-illusion.ipynb)” <a href='#fn3' name='fn3b'><sup>[3]</sup></a> —— 当然，真正会了之后，马上开始时时刻刻都有可能使用，离开它简直活不下去 —— 写这书的后半程，有大量的重新组织的需要，很多文字替换，若是没有正则表达式，就干脆没法干……\n",
    "\n",
    "我是如何完全掌握正则表达式的呢？就是因为写这本书。既然是写书，当然害怕自己在不经意中出错，此为其一。更为重要的是，必须先完整掌握之后才能有诸如 “为读者提供更好一点的理解起点”，“理解起来相对更简单直接的组织结构”，以及 “挖掘必须习得它的真正原因以便鼓励读者” 之类的畅销书卖点 —— 对作者来说，有什么比销量更重要的呢？\n",
    "\n",
    "写一本好书，对我来讲，这个需求太刚了，刚到好像是**钛钢**的地步。\n",
    "\n",
    "于是，本来就习惯于同一个话题多读好多本书的我，读了更多的书，翻了更多的教程，官方文档翻了更多遍，做了更多的笔记，每一章反复废掉原稿再次重写了很多遍…… 在这样的刺激下，“全面程度” 若是没有极速提高，那才怪了呢！\n",
    "\n",
    "还有啊，我的英语，也是这么搞出来的。\n",
    "\n",
    "所以，很多的时候，我这个人并不是 “好为人师”，细想想，貌似 “好为己师” 更为恰当一点。写书也好讲课也罢，其实自己的进步是最大的。\n",
    "\n",
    "若是我没有在新东方教书七年，我连当前这个半吊子英文水准都不会有…… 为了在讲台上不犯错，多多少少都得多费一些功夫吧？我的经验和许嘉璐先生是一样的，无论备课多努力，后面还是会有纰漏…… 可是，这若只是做个 “下学” 者，岂不更惨？\n",
    "\n",
    "哦，对了，其实所有的读者，都可以用这个简单的方法影响下一代：\n",
    "\n",
    "> 有同学问，你就一定要耐心讲讲 —— **对自己有好处。**\n",
    "\n",
    "当然，最直接的方法是把自己变成 “上学” 者，保持开放，乐于分享，而孩子只需通过 “耳闻目染” 就可以了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-----\n",
    "**脚注**\n",
    "\n",
    "<a name='fn1'>[1]</a>：一点八卦：Dive into Python 的作者是 [Mark Pilgrim](https://en.wikipedia.org/wiki/Mark_Pilgrim)；他是互联网上最著名的自绝于信息世界（[infosuicide](https://www.urbandictionary.com/define.php?term=infosuicide)）的三人之一。另外两位分别是比特币的作者 [Satoshi Nakamoto](https://en.wikipedia.org/wiki/Satoshi_Nakamoto)，和 [Why the lucky stiff](https://whytheluckystiff.net/) 的作者 [Jonathan Gillette](https://en.wikipedia.org/wiki/Why_the_lucky_stiff)。\n",
    "\n",
    "<a href='#fn1b'><small>↑Back to Content↑</small></a>\n",
    "\n",
    "<a name='fn2'>[2]</a>：许嘉璐，1998 年至 2000 年全国人大常委会副委员长，民进中央主席，国家语言文字工作委员会主任。\n",
    "\n",
    "<a href='#fn2b'><small>↑Back to Content↑</small></a>\n",
    "\n",
    "<a name='fn3'>[3]</a>：写完这一段，给霍炬看，他当场嘲笑我，“哈！当年我就说，你应该学学 Vim，是不是到现在你都没学？” 我无言以对，因为真的就没学…… 然后，我想了想，回复他说，“好吧，我决定写一个 Vim 教程出来，嗯。”\n",
    "\n",
    "<a href='#fn3b'><small>↑Back to Content↑</small></a>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
